package com.data.sample.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import org.eclipse.milo.opcua.sdk.client.api.identity.IdentityProvider;
import org.eclipse.milo.opcua.stack.core.security.SecurityPolicy;
import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;

import java.util.List;
import java.util.Map;

@AllArgsConstructor
@Data
public class OpcClientConfig {

    /**
     * 机组编号，如：1LMQD1
     */
    private String unitCode;

    /**
     * 机组ID
     */
    private String protocolId;


    /**
     * 主服务器地址
     */
    private String mainServerAddress;

    /**
     * 备服务器地址
     */
    private String prepareServerAddress;

    /**
     * 证书路径
     */
    private String certificatePath;

    /**
     * 用户名
     */
    private String userName;

    /**
     * 密码
     */
    private String password;

    /**
     * 数据发布间隔
     */
    private Integer dataReleaseInterval;

    /**
     * 连接保活计数
     */
    private Integer keepAliveCount;

    /**
     * 是否使能：0-禁用, 1-启用
     */
    private Integer enableFlag;

    /**
     * 节点列表
     */
    private List<OpcUaPoint> opcUaPoints;


    private SecurityPolicy securityPolicy;

    private IdentityProvider identityProvider;

    /**
     * ck映射表
     */
    private Map<String, String> ckMappingMap;

    /**
     * 主客户端链路存在故障
     */
    private Boolean mainClientFault;

    /**
     * 备客户端链路存在故障
     */
    private Boolean prepareClientFault;

    /**
     * 站场OPC UA协议表，格式：pointName, n=2, ns=XXX.pointName
     */
    Map<String, NodeId> nodeIdMap;

    /**
     * 标定映射
     */
    Map<String, Calibration> CalibrationMap;


    /**
     * 数据发布间隔初始值
     */
    private Integer dataReleaseIntervalInit;
}
